package org.example.pms.controller;

import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.example.pms.domain.VaccineResult;
import org.example.pms.service.VaccineResultService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

@RestController
@RequestMapping("/vaccineResults")
public class VaccineResultController {

    @Value("${file.uploadPatch}")
    private String uploadFilePath;

    @Value("${file.visitPath}")
    private String visitPath;

    @Resource
    private VaccineResultService vaccineResultService;

    /**
     * 根据id查询
     *
     * @param id 疫苗结果id
     * @return 疫苗结果
     */
    @GetMapping("/{id}")
    public VaccineResult getVaccineResult(@PathVariable Integer id) {
        return vaccineResultService.getVaccineResultById(id);
    }

    /**
     * 根据患者id查询
     *
     * @param patientId 患者id
     * @return 疫苗结果集
     */
    @GetMapping("/results/{patientId}")
    public List<VaccineResult> getVaccineResultByPatientId(@PathVariable Integer patientId) {
        List<VaccineResult> vaccineResults = vaccineResultService.getVaccineResultByPatientId(patientId);
        return vaccineResults;
    }

    /**
     * 新增疫苗结果
     *
     * @param vaccineResult 疫苗结果
     * @return 新增疫苗结果di
     */
    @PostMapping()
    public int addVaccineResult(@RequestBody VaccineResult vaccineResult) {
        Integer id = vaccineResultService.addVaccineResult(vaccineResult);
        return id;
    }

    @PostMapping("/file/upload")
    public JSONObject handleFileUpload(@RequestParam MultipartFile file) {

        try {
            // uuid生成
//            String uuid = IdUtil.randomUUID();

            //当前时间
            Date date = DateUtil.date();

            //常用格式的格式化，结果：2017-03-01
            String formatDate = DateUtil.formatDate(date);
            long l = DateUtil.currentSeconds();
            String s = String.valueOf(l);

            // 获取上传文件的文件名
            String fileName = file.getOriginalFilename();
            // 创建文件路径
            String filePath = uploadFilePath + File.separator + "images" + File.separator + formatDate + s + "_" + fileName;

            // 检查目录是否存在，不存在则创建
            File dir = new File(uploadFilePath + File.separator + "images");
            if (!dir.exists()) {
                dir.mkdirs(); // 使用mkdirs创建多级目录
            }

            // 将文件保存到磁盘
            file.transferTo(new File(filePath));

            JSONObject jsonObject = JSONUtil.createObj();

            HashMap<String, String> map = new HashMap<>();
            map.put("url", visitPath + "/static/images/" + formatDate + s + "_" + fileName);
            map.put("alt", fileName);
            map.put("url", visitPath + "/static/images/" + formatDate + s + "_" + fileName);

//            ArrayList<HashMap> list = new ArrayList<>();
//            list.add(map);


            jsonObject.set("errno", 0);
            jsonObject.set("data", map);

            return jsonObject;
        } catch (IOException e) {
            JSONObject jsonObject = JSONUtil.createObj();
            jsonObject.set("errno", 1);
            jsonObject.set("errmsg", "失败信息");
            return jsonObject;
        }
    }


    // 如果需要，可以添加更多的方法，如 update, delete 等
}
